package com.yourname.www.model;

import com.yourname.www.entity.Student;

import javax.swing.table.AbstractTableModel;
import java.util.List;
import java.util.Vector;

/**
 * 基础抽象类
 */
public class StudentModel extends AbstractTableModel {

    //不可变集合
    //可以用自己熟悉的数据类型
    private final Vector<String> columnNames;
    private final Vector<Vector<String>> rowData;
    public StudentModel(List<Student> studentList){
        //完成初始化
        //定义表头
        System.out.println("---INIT----");
        columnNames = new Vector<String>();
        rowData = new Vector<Vector<String>>();
        columnNames.add("学号");
        columnNames.add("姓名");
        columnNames.add("性别");
        columnNames.add("年级");
        columnNames.add("班级");
        columnNames.add("院系");
        columnNames.add("专业");


        for(Student student : studentList){
            Vector<String> hang = new Vector<String>();
            hang.add(student.getStudent_Id());
            hang.add(student.getStudent_Name());
            hang.add(student.getStudent_Sex());
            hang.add(String.valueOf(student.getGrade()));
            hang.add(String.valueOf(student.getClasse()));
            hang.add(student.getDepartment_Name());
            hang.add(student.getMajor_Name());
            rowData.add(hang);
        }
    }

    /**
     * 重写父类的方法，改变获取列名的规则
     * @param column
     * @return
     */
    @Override
    public String getColumnName(int column) {
        //第几列
        return columnNames.get(column);
    }

    /**
     * 获取数据表有多少行
     * @return
     */

    @Override
    public int getRowCount() {
        //System.out.println("---"+this.rowData.size());
        return  this.rowData.size();
    }

    /**
     * 获取数据表有多少列
     * @return
     */
    @Override
    public int getColumnCount() {
        //System.out.println("---"+this.columnNames.size());
        return this.columnNames.size();
    }

    /**
     * 根据行号和列号获取单元格的内容
     * @param rowIndex
     * @param columnIndex
     * @return
     */
    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        //Object.toString()
        //System.out.println(((Vector) this.rowData.get(rowIndex)).get(columnIndex));
        return ((Vector)this.rowData.get(rowIndex)).get(columnIndex);
    }
}
